chore(deps): update stabilityanalyzer to v0.10.0#208
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
There was a problem hiding this comment.
🤖 Android CI Summary
Step Results:
- Debug Build: ⏭️ Skipped (0s)
- Code Style Check: ❌ Failure (0s)
- Compose Stability: ⏭️ Skipped (0s)
Total Time: 0s
See the Actions Log for details.
c9869c3 to
2ca3d1f
Compare
There was a problem hiding this comment.
🤖 Android CI Summary
Step Results:
- Debug Build: ⏭️ Skipped (0s)
- Code Style Check: ❌ Failure (0s)
- Compose Stability: ⏭️ Skipped (0s)
Total Time: 0s
See the Actions Log for details.
2ca3d1f to
c7faf8b
Compare
There was a problem hiding this comment.
🤖 Android CI Summary
Step Results:
- Debug Build: ❌ Failure (0s)
- Code Style Check: ✅ Success (2m 31s)
- Compose Stability: ⏭️ Skipped (0s)
Total Time: 2m 31s
See the Actions Log for details.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.6.4→0.10.0Release Notes
skydoves/compose-stability-analyzer (com.github.skydoves.compose.stability.analyzer)
v0.10.0Compare Source
Added
var→val(aborts if write usages exist), annotate with@Immutable/@Stable, add the type to the stability configuration file, and wrap call-site arguments inremember(keys) { ... }for silent-waste parameters (guarded by conservative safety rules and a preview dialog). New Doctor tool-window tab, Code → Run Stability Doctor action, and a settings group.@TraceRecomposition, so the Live Heatmap, Reality Check, and Stability Doctor get module-wide runtime data without manual annotations.composeStabilityAnalyzer { traceAll { enabled.set(true) // default: false (opt-in) threshold.set(2) // default: 2 — skips the initial-composition burst variants.set(listOf("debug")) // default: ["debug"]; never applies to tests } }@TraceRecompositionannotations keep their own tag/threshold; previews, inline/readonly/non-restartable composables, and property getters are excluded automatically.(fq: com.example.UserProfile)and(auto)tokens (backward compatible with older parsers), so the IDE attributes runtime data precisely even when composables share a simple name across packages.RecompositionEventgains additivefqNameandisAutoTracedfields.Fixed
gradle-apiascompileOnlyand isolates all AGP types behind an Android-only registrar, so KMP/JVM projects without AGP work and AGP 8.x projects no longer get AGP 9 on their buildscript classpath.kotlinx.datetime.LocalTime?matches akotlinx.datetime.LocalTimeconfig entry.Changed
ComposeStabilityAnalyzer.setEnabled(false), trackers allocate nothing (early exits before any event construction); the tracker cache is thread-safe and keyed by fully qualified name to avoid cross-package collisions.v0.9.0Compare Source
Added
ParameterStability.UNKNOWN— a fourth stability value for types whose stability cannot be determined statically (interfaces and non-final classes). Mirrors the Compose 2.4.0 compiler'sStability.Unknown.Changed
ProjectExtensionDescriptormechanism (KT-83341); the deprecatedIrPluginContext.referenceClass/referenceFunctionswere replaced with thefinderForSourceAPI.UNKNOWNstability rule — interfaces and non-final (open/abstract) classes now reportUNKNOWNinstead ofRUNTIME/UNSTABLE, matching the Compose 2.4.0 compiler. This includes anykotlin.Any?parameter (sinceAnyisopen). Skippability is unchanged (these types were already non-skippable), but the rule will produce diffs in committed.stabilitybaselines — run./gradlew stabilityDumpto refresh them. ASTABLE → UNKNOWNtransition is reported as a regression bystabilityCheck.v0.8.0Compare Source
Added
equals-equal instance every frame (silent waste). Grades appear in editor inlays, hover tooltips (predicted vs. actual), and a new Reality tool-window tab with a wasted-recomposition tally.@TraceRecomposition(traceStates = true), a Compose Snapshot write observer records where each internal state was mutated, e.g.[state] counter: Int changed (0 → 1) ← onClick (Screen.kt:42).@Composable→ Blame this Recomposition to walk the reverse call graph and see where each argument's value originates, in a new Blame tool-window tab.ParameterChange.referenceChanged(runtime API) — distinguishes anequals-equal value delivered as a new instance (a strong-skipping===miss) from a genuine value change; this powers the Reality Check.Changed
stability-runtimenow declares acompileOnlydependency on the Compose runtime for its Android/JVM source sets (used only by the state-write observer); all other Kotlin Multiplatform targets remain Compose-free via no-opactuals.v0.7.5Compare Source
Added
allowIncrementalDisablingconfiguration switch (Issue #156, #158)stabilityValidation.allowIncrementalDisablingproperty (default:true) to control whether the plugin may disable Kotlin's incremental compilation when stability validation tasks are in the build graphfalseto opt out and keep incremental compilation enabled even when runningstabilityDump/stabilityCheckChanged
2026.04.01, Android Gradle Plugin8.13.2, Lint API32.1.12.2.0, kotlinx.serialization1.11.0, Spotless7.0.2, Nexus publish plugin0.36.0, androidx Activity1.13.0, runtime annotation1.11.0KotlinCompile-dependent task now writes to a dedicatedbuild/stability/<name>/directory to prevent cross-variant clobbering. Consumers (Stability Explorer,stabilityDump/stabilityCheck) read from both the new and legacy layouts for backward compatibility.Fixed
val→var). The plugin now disables incremental compilation whilestabilityDump/stabilityCheckare in the task graph so stability results stay accurate (can be opted out viaallowIncrementalDisabling).v0.7.4Compare Source
Added
@TraceRecompositionnow measures composable recomposition duration viaSystem.nanoTime()IR injection[Recomposition #​3] UserCard (2.30ms)RecompositionEvent.durationNanosfield added for custom logger consumptionexpect/actual currentNanoTime()(Android/JVM supported, other platforms gracefully skip)[param]and[state]prefixed lines and duration from log outputChanged
com.github.johnrengelman.shadowtocom.gradleup.shadow)v0.7.3Compare Source
Added
stabilityDump(Issue #130, PR #105)stabilityConfigurationFilesnow applies to bothstabilityDumpandstabilityChecktasksskippableflag is recalculated based on resolved parameter stabilityunstableOnlyoption for stability baseline (Issue #128)unstableOnlyoption: when enabled, only unstable composables are included in the baseline filestabilityCheckoutput for new composables shows each parameter's stability status@TraceRecomposition(Issue #89)traceStatesannotation parameter:@TraceRecomposition(traceStates = true)mutableStateOf,mutableIntStateOf,derivedStateOfand other Compose state changesIrLocalDelegatedPropertyIR analysis[state]prefix, parameter changes with[param]prefixFixed
ignoredPackagesnow consistently respected duringstabilityCheck(Issue #129)stabilityDumpbut still detected as "new composable" duringstabilityCheck@Optionalannotation added tostabilityConfigurationFilestask input (PR #105)adb.exedetection on Windows for the Heatmap feature%LOCALAPPDATA%\Android\Sdk)wherecommand instead ofwhichon Windows for PATH lookupChanged
StabilityComparison.kt(PR #105)StabilityConfigParser.kt(PR #105)v0.7.2Compare Source
[0.7.2] - 2026-04-02
Added
stabilityDump(Issue #130, PR #105)stabilityConfigurationFilesnow applies to bothstabilityDumpandstabilityChecktasksskippableflag is recalculated based on resolved parameter stabilityunstableOnlyoption for stability baseline (Issue #128)unstableOnlyoption: when enabled, only unstable composables are included in the baseline filestabilityCheckoutput for new composables shows each parameter's stability statusFixed
ignoredPackagesnow consistently respected duringstabilityCheck(Issue #129)stabilityDumpbut still detected as "new composable" duringstabilityCheck@Optionalannotation added tostabilityConfigurationFilestask input (PR #105)adb.exedetection on Windows for the Heatmap feature%LOCALAPPDATA%\Android\Sdk)wherecommand instead ofwhichon Windows for PATH lookupChanged
StabilityComparison.kt(PR #105)StabilityConfigParser.kt(PR #105)v0.7.1Compare Source
Fixed
NoSuchMethodErrorforIrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUBandDEFINEDconstantsComposableStabilityCheckerfromFirSimpleFunctionCheckertoFirCallableDeclarationCheckerto handleFirSimpleFunction→FirNamedFunctionrenameChanged
v0.7.0Compare Source
Added
@Composablefunction and select "Analyze Recomposition Cascade" to trace downstream composables affected by recomposition@TraceRecompositionevents from ADB logcat and aggregates per-composable datarunPluginVerifiertask for automated compatibility testingImproved
runCatchingpattern in cascade analyzerProgressIndicator.checkCanceled()v0.6.7Compare Source
Added
debugStabilityDump,releaseStabilityCheck) for Android projectsstabilityDump,stabilityCheck) still available for all variantsignoreNonRegressiveChangesoption: only flag stability regressions, ignore non-regressive changes (e.g., new stable parameters)allowMissingBaselineoption: allow stability checks to run even without an existing baseline filestabilityPatternToRegexto support*and**wildcard syntax in stability configuration filescom.datalayer.*,com.example.**Fixed
@StabilityInferredannotation now supported in Gradle plugin (Issue #102, PR #112)@StabilityInferred(parameters=0)are now correctly treated as stable duringstabilityDump/stabilityCheck@StabilityInferredwere incorrectly marked as UNSTABLE@NonRestartableComposableand@NonSkippableComposable(Issue #103, PR #111)@NonRestartableComposableor@NonSkippableComposableare now excluded from stability analysistypealias ComposableAction = @​Composable () -> Unit) are now correctly recognized as stableImproved
nj2k.descendantsOfTypewith stablePsiTreeUtilAPI (PR #109)v0.6.6Compare Source
Fixed
stability-info.jsoninput file for up-to-date checks@Internalto@InputFilesannotation on input file property./gradlew stabilityDumpwould skip execution even when stability files were missingcleanor when stability output is deletedv0.6.5Compare Source
Added
quietCheck: Boolean = falseoption instabilityValidationconfigurationstabilityValidation { quietCheck.set(true) }Changed
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.